diff --git a/system/helpers/html_helper.php b/system/helpers/html_helper.php
index 5ba1df9..e32abfb 100644
--- a/system/helpers/html_helper.php
+++ b/system/helpers/html_helper.php
@@ -42,6 +42,113 @@
 {
 	return "<h".$h.">".$data."</h".$h.">";
 }
+
+// ------------------------------------------------------------------------
+
+/**
+ * Unordered List
+ *
+ * Generates an HTML unordered list from an single or multi-dimensional array.
+ *
+ * @access	public
+ * @param	array
+ * @param	mixed
+ * @return	string
+ */	
+function ul($list, $attributes = '')
+{
+	return _list('ul', $list, $attributes);
+}
+
+// ------------------------------------------------------------------------
+
+/**
+ * Ordered List
+ *
+ * Generates an HTML ordered list from an single or multi-dimensional array.
+ *
+ * @access	public
+ * @param	array
+ * @param	mixed
+ * @return	string
+ */	
+function ol($list, $attributes = '')
+{
+	return _list('ol', $list, $attributes);
+}
+
+// ------------------------------------------------------------------------
+
+/**
+ * Generates the list
+ *
+ * Generates an HTML ordered list from an single or multi-dimensional array.
+ *
+ * @access	private
+ * @param	string
+ * @param	mixed		
+ * @param	mixed		
+ * @param	intiger		
+ * @return	string
+ */	
+function _list($type = 'ul', $list, $attributes = '', $depth = 0)
+{
+	// If an array wasn't submitted there's nothing to do...
+	if ( ! is_array($list))
+	{
+		return $list;
+	}
+	
+	// Set the indentation based on the depth
+	$out = str_repeat(" ", $depth);
+	
+	// Were any attributes submitted?  If so generate a string
+	if (is_array($attributes))
+	{
+		$atts = '';
+		foreach ($attributes as $key => $val)
+		{
+			$atts .= ' ' . $key . '="' . $val . '"';
+		}
+		$attributes = $atts;
+	}
+	
+	// Write the opening list tag
+	$out .= "<".$type.$attributes.">\n";
+
+	// Cycle through the list elements.  If an array is 
+	// encountered we will recursively call _list()
+
+	static $_last_list_item = '';
+	foreach ($list as $key => $val)
+	{	
+		$_last_list_item = $key;
+
+		$out .= str_repeat(" ", $depth + 2);
+		$out .= "<li>";
+		
+		if ( ! is_array($val))
+		{
+			$out .= $val;
+		}
+		else
+		{
+			$out .= $_last_list_item."\n";
+			$out .= _list($type, $val, '', $depth + 4);
+			$out .= str_repeat(" ", $depth + 2);
+		}
+
+		$out .= "</li>\n";		
+	}
+
+	// Set the indentation for the closing tag
+	$out .= str_repeat(" ", $depth);
+	
+	// Write the closing list tag
+	$out .= "</".$type.">\n";
+
+	return $out;
+}
 	
 // ------------------------------------------------------------------------
 
